package net.sf.jOpinionPoll.controller;

import java.util.Comparator;
import java.util.Date;

public abstract class JOPComparator<T> implements Comparator<T> {
	protected int compare(String s1, String s2, boolean inverter) {
		if (!inverter) {
			if (s1 != null) {
				return s1.compareToIgnoreCase(s2);
			}
			else {
				return -1;
			}
		}
		else {
			if (s2 != null) {
				return s2.compareToIgnoreCase(s1);
			}
			else {
				return -1;
			}
		}
	}
	
	protected int compare(Date d1, Date d2, boolean inverter) {
		if (!inverter) {
			if (d1 != null && d2 != null) {
				return (d1.getTime() > d2.getTime() ? 1 : (d1 == d2 ? 0 : -1));
			}
			else if (d1 != null){
				return 1;
			}
			else if (d2 != null) {
				return -1;
			}
			else {
				return 0;
			}
		}
		else {
			if (d1 != null && d2 != null) {
				return (d2.getTime() > d1.getTime() ? 1 : (d1 == d2 ? 0 : -1));
			}
			else if (d2 != null){
				return 1;
			}
			else if (d1 != null) {
				return -1;
			}
			else {
				return 0;
			}
		}
	}
}